#!/usr/bin/env node

// Node CLI 引用入口文件必须要有这样的文件头
// 如果是 Linux 或者 macOS 系统下还需要修改此文件的读写权限为 755
// 具体就是通过  chmod 755 cli.js 实现修改

// 脚手架的工作过程：
// 1. 通过命令行交互询问用户问题
// 2. 根据用户回答的结果生成文件

const fs = require('fs')
const path = require('path')
const inquirer = require('inquirer')
const ejs = require('ejs')

inquirer.prompt([{
        type: 'input',
        name: 'name', // 输入的键
        message: 'Project name?' // 提示
    }])
    .then(anwsers => {
        // 动态生成项目文件

        // 模板目录
        const tmplDir = path.join(__dirname, 'templates')
            // 目标目录
        const destDir = process.cwd()

        // 将模板下的文件全部转换到目标目录
        // files 参数拿到所有的文件列表
        fs.readdir(tmplDir, (err, files) => {
            if (err) throw err
            files.forEach(file => {
                // console.log(file)
                // 通过 ejs 模板引擎的 renderFile 方法渲染路径所对应的文件
                // 参数：1.文件的绝对路径 2.模版引擎获取的数据上下文 3.回调函数
                ejs.renderFile(path.join(tmplDir, file), anwsers, (err, result) => {
                    if (err) throw err

                    // 文件写入的方式将结果写入到目标目录文件
                    fs.writeFileSync(path.join(destDir, file), result)
                })
            });
        })
    })